一個 LLM 是怎麼被「養成」的呢?他和 BERT 這類傳統 PLM 的訓練過程又有什麼差異?
LLM 的訓練大致可以分為三個階段:
LLM 的第一步,就是在海量語料上做 Causal Language Model(CLM),簡單來說,就是「給定前文,來預測下一個 token」。
這跟 BERT 這類傳統 PLM(主要用 MLM:遮蔽預測)不太一樣,CLM 更貼近生成式任務,讓模型學會自然的接續語句。
GPT-3 有 1750 億參數,需要超過 3000 億 tokens 的訓練資料,LLaMA 甚至提出「資料量應該是參數量的 20 倍」才更能發揮模型效能。
10 億級模型會大約需要 256 張 A100 訓練數天,而 1000 億級模型,可能需要上千張的 A100 訓練數週,為了訓練這樣的龐然大物,只能依靠分散式訓練。
分散式訓練的兩大策略:
數據平行(Data Parallelism):同一個模型的副本分散到多張 GPU,不同的 GPU 處理不同的資料批次,之後各 GPU 再計算梯度後同步更新參數。
模型平行(Model Parallelism):模型如果過大無法放入單張 GPU 的時候,將不同層拆分到多張 GPU 運行。
進階並行策略:
LLM 的知識來源是訓練數據,因此數據的品質比量更加重要,典型資料來源包括:CommonCrawl、C4、Wikipedia、Books、Github、ArXiv,例如 LLaMA 的資料配比:67% CommonCrawl、15% C4、4.5% Wikipedia 等。
而中文 LLM 更困難,因為高品質開源中文語料稀缺,目前只有 SkyPile(150B)、yayi2(100B)等可用。
參考連結:
https://datawhalechina.github.io/happy-llm/#/